package com.ruoyi.project.comp.like.mapper;

import java.sql.Timestamp;
import java.util.Date;
import java.util.List;
import com.ruoyi.project.comp.like.domain.CompLike;
import org.apache.ibatis.annotations.Param;

/**
 * 作品点赞记录Mapper接口
 * 
 * @author ruoyi
 * @date 2025-11-02
 */
public interface CompLikeMapper 
{
    /**
     * 查询作品点赞记录
     * 
     * @param id 作品点赞记录主键
     * @return 作品点赞记录
     */
    public CompLike selectCompLikeById(Long id);

    /**
     * 查询作品点赞记录列表
     * 
     * @param compLike 作品点赞记录
     * @return 作品点赞记录集合
     */
    public List<CompLike> selectCompLikeList(CompLike compLike);

    /**
     * 新增作品点赞记录
     * 
     * @param compLike 作品点赞记录
     * @return 结果
     */
    public int insertCompLike(CompLike compLike);

    /**
     * 修改作品点赞记录
     * 
     * @param compLike 作品点赞记录
     * @return 结果
     */
    public int updateCompLike(CompLike compLike);

    /**
     * 删除作品点赞记录
     * 
     * @param id 作品点赞记录主键
     * @return 结果
     */
    public int deleteCompLikeById(Long id);

    /**
     * 批量删除作品点赞记录
     * 
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteCompLikeByIds(String[] ids);

    int selectTodayLikeCount( @Param("workId") Integer workId,
                              @Param("userId") Integer userId,
                              @Param("startTime") Date startTime,
                              @Param("endTime") Date endTime);






    // 检查今日是否已点赞（原有方法）
    boolean checkTodayLike(@Param("workId") Integer workId, @Param("userId") String userId);

    // 条件1：统计今日点赞的不同作品数量
    int countDistinctWorksToday(@Param("userId") String userId);

    // 条件2：统计今日总点赞次数
    int countTotalLikesToday(@Param("userId") String userId);

    // 条件3：统计今日对指定作品的点赞次数
    int countWorkLikesToday(@Param("workId") Integer workId, @Param("userId") String userId);

    // 条件4：获取最后一次点赞时间
    Timestamp getLastLikeTime(@Param("userId") String userId);


}
